1. The Field of the Invention
The present invention relates to electronic messaging and, more particularly, to maintaining multiple versions of message bodies in a common database
2. Background and Relevant Art
Computer systems and related technology affect many aspects of society. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, and database management) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired and wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. As a result, many tasks performed at a computer system (e.g., voice communication, accessing electronic mail, controlling home electronics, web browsing) include electronic communication between a number of computer systems and/or other electronic devices via wired and/or wireless computer networks.
In particular, electronic messaging has become an important method for communicating. Computer system users often send and receive electronic messages (e.g., electronic mail messages, instant messages, faxes, news group postings, etc.) to exchange information with one another. For example, to create an electronic mail message, a sending user typically selects a new message option from within an electronic mail application. In response to the selection, the electronic mail application displays one or more fields (e.g., a To field, a Body field, etc.) that can receive user entered data. The sending user then enters data (e.g., at a keyboard) into the displayed fields. When appropriate, the sending user can save the electronic mail message as a draft or send the electronic mail message to a recipient user (e.g., by selecting the appropnate “save” or “send” control within the electronic mail application).
Sending the electronic mail message may cause the electronic mail message to be routed from the sending user's computer system, through a sending mail server, across a network, to a receiving mail server that stores electronic mail messages for a recipient user. To view the electronic mail message, the recipient user establishes a connection from an electronic mail application to the receiving mail server. Establishing the connection can cause all electronic mail messages sent to the recipient user, including the mail message from the sending user, to be transferred from the receiving mail server to the recipient user's computer system and stored at the recipient user's computer system. After the electronic mail message from the sending user is transferred and stored, the recipient user may manipulate an input device, such as, for example, a mouse, within the electronic mail application to view the stored electronic mail message.
Computer system users can also use other different messaging applications to send, receive, and store other different types of electronic messages. Unfortunately, different types of electronic messages (e.g., electronic mail messages, instant messages, faxes, blog entries, voice messages, etc.) are typically stored in different, and often application specific, message data formats. For example, one type of electronic message (e.g., an electronic mail message) may be stored in a first message data format (e.g., Rich Text Format (“RTF”)), while another type of electronic message (e.g., an instant message) is stored in a second different message data format (e.g., eXtensible Markup Language “XML”). Processing a particular electronic message typically requires a messaging application that is configured to process message data of a particular corresponding message data format For example, a user is typically required to use an instant messaging application to process electronic messages in an instant message data format, required to use an electronic mail application to process electronic messages in an electronic mail message data format, required to use a fax application to process electronic messages in a fax message data format, etc.
Further, it is essentially impracticable to design a messaging application to be compatible with message data formats used by a variety of other messaging applications. For example, it would require 102 (100) pieces of custom code to design ten messaging applications having different message data formats to be compatible with one another's message data formats. Also, for continued compatibility, each existing messaging application would have to be updated with new custom code as new message data formats evolve.
Accordingly, messaging applications are typically designed for compatibility with only a few, or even only one, message data format and cannot generally be used to access electronic messages of other message data formats. That is, messaging applications are typically designed to access message data stored in a limited number of message data formats, and potentially only one message data format, that correspond to a specified message type. For example, an instant message application is typically configured to access data stored in an instant message data format but is typically not configured to access data stored in a fax or electronic mail message data format. Thus, it would be difficult, if not impossible, to use an instant messaging application to view messages stored in a fax or electronic mail message data format.
Additionally, as previously mentioned, some message data formats are application specific. Thus, two messaging applications configured to process the same type of electronic messages (e.g., electronic mail messages) may nonetheless use different message data formats to store electronic message data. For example, a first electronic mail application may store electronic mail messages using a first message data format, while a second electronic mail application stores electronic mail messages using a second different message data format. Thus, a messaging application developed to access electronic messages of a particular type may not be able to access all electronic messages of a particular type. For example, an electronic mail message stored in the first message data format by the first electronic mail application may not be accessible to the second electronic mail application (e.g., that can only access electronic mail messages stored in the second message data format).
At least one attempt has been made to compensate for different message data formats. For example, the Multipurpose Internet Message Extension (“MIME”) Standard defines a multi-part alternate format that facilitates including multiple versions of (the same) message data in an electronic message. Each version of the message data is in a different message data format. Including multiple differently formatted versions of message data increases the likelihood that a receiving messaging application will be able to process the message data. For example, a sending electronic mail application can include both a HyperText Markup Language (“HTML”) version and a plain text version of message data in an electronic mail message. Thus, receiving electronic mail applications capable of processing HTML can process the HTML version of the message data and receiving electronic mail applications capable of processing plain text can process the plain text version of the message data.
Unfortunately, it would be very difficult, if not impossible, to utilize multi-part messages to account for every possible message data format. The size of the electronic messages would become quite large and would unnecessarily consume network resources when transferred. Further, large portions of multi-part messages would never be processed, since a receiving messaging application could process, at most, only a few of the different message data formats included in the message.
Further, different messaging applications typically storing corresponding electronic messages in different databases. For example, instant messaging applications typically store instant messages in an instant messaging database, electronic mail applications typically store electronic mail messages in an electronic mail database, a news group reader typically stores news group postings in a news group database, etc. Thus, even if first messaging application was configured to process a message data format commonly associated with second messaging application, the first message application would typically have no way to the location of the second messaging application's database.
Accordingly, most, if not all, computer systems include a number of messaging applications for storing and accessing message data stored in different message data formats and residing in different databases. Rarely, if ever, is one messaging application design to access the message database of another messaging application. Thus, a user may be required to use a number of messaging applications. For example, a computer system often includes an electronic mail application for processing electronic mail messages, an instant message application for processing instant messages, and a fax application for processing fax messages, etc.
Using multiple electronic messaging applications can be time consuming, for example, when a user desires to access all available electronic messages corresponding having specified content. If the desired electronic messages are stored in different data formats and/or reside in different databases, each messaging application will have to perform a separate search for desired electronic messages. For example, the user may be required to switch to an electronic mail application (or even switch between multiple electronic mail applications) to search for electronic mail messages, switch to an instant message application to search for instant messages, and switch to a voice message application to search for voice messages. Having multiple messaging applications perform searches for electronic messages potentially results in an undesirable expenditure of time and computer system resources. Therefore systems, methods, computer program products, and data structures that facilitate more efficient access to the electronic message data would be advantageous.